﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CapaDeEntidades;
using System.Data.SqlClient;
using System.Data;

namespace CapaDatos
{
    public class PrestamoDao
    {
        public static string connectionstring = "Initial Catalog=Biblioteca;Data Source=localhost\\SQLEXPRESS;Integrated Security=SSPI;";


        public static bool RegistrarDevolucionPrestamo(Prestamo prestamo)
        {
            bool respu = false;
            SqlConnection conn = new SqlConnection(connectionstring);

            try
            {

                int idPrestamo = 0;

                //  if (prestamo.IdPrestamo != null)
                //{
                idPrestamo = prestamo.IdPrestamo;
                //}

                conn.Open();
                SqlCommand cmd = new SqlCommand("sp_ActualizarPrestamo", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@idPrestamo", idPrestamo);
                cmd.Parameters.AddWithValue("@alta_devolucion", respu);
                cmd.Parameters["@alta_devolucion"].Direction = ParameterDirection.Output;
                cmd.ExecuteNonQuery();
                respu = Convert.ToBoolean(cmd.Parameters["@alta_devolucion"].Value);
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
                System.Diagnostics.Debug.WriteLine(ex.StackTrace);
            }
            finally
            {
                if (conn != null)
                    conn.Close();
            }
            return respu;
        }

        public static bool GenerarPrestamo(Prestamo prestamo)
        {

            bool respu = false;
            SqlConnection conn = new SqlConnection(connectionstring);

            try
            {

                DateTime fechaPedido; //REVISAR LAS FECHAS
                int idLibro = 0;
                int idSocio = 0;
                DateTime fechaDevolucion;
                DateTime fechaRealDevolucion;


                if (prestamo.Libro.IdLibro != null)
                {
                    idLibro = prestamo.Libro.IdLibro;
                }

                if (prestamo.Socio.Codigo != null)
                {
                    idSocio = prestamo.Socio.Codigo;
                }
                //REVISAR VALIDACIONES

                fechaPedido = prestamo.FechaPrestamo;

                fechaDevolucion = prestamo.FechaDevolucion;

                //fechaRealDevolucion = prestamo.FechaRealDevolucion;


                conn.Open();
                SqlCommand cmd = new SqlCommand("sp_CrearPrestamo", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@fechaPedido", fechaPedido);
                cmd.Parameters.AddWithValue("@idLibro ", idLibro);
                cmd.Parameters.AddWithValue("@idSocio", idSocio);
                cmd.Parameters.AddWithValue("@fechaDevolucion", fechaDevolucion);
                //cmd.Parameters.AddWithValue("@fechaRealDevolucion", fechaRealDevolucion);

                cmd.Parameters.AddWithValue("@alta_prestamo", respu);


                cmd.Parameters["@alta_prestamo"].Direction = ParameterDirection.Output;
                cmd.ExecuteNonQuery();
                respu = Convert.ToBoolean(cmd.Parameters["@alta_prestamo"].Value);


            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
                System.Diagnostics.Debug.WriteLine(ex.StackTrace);
            }
            finally
            {
                if (conn != null)
                    conn.Close();
            }
            return respu;


        }

        public static DataSet ObtenerPrestamosPorSocio(Prestamo prestamo)
        {

            SqlConnection conn = new SqlConnection(connectionstring);
            DataSet ds = new DataSet();
            try
            {
                int idSocio = 0;

                idSocio = prestamo.Socio.Codigo;


                SqlCommand cmd = new SqlCommand("sp_ObtenerPrestamosPorSocio", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@idSocio ", idSocio);

                //LLENO EL DATASET
                SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                adapter.Fill(ds);
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
                System.Diagnostics.Debug.WriteLine(ex.StackTrace);
            }
            finally
            {
                if (conn != null)
                    conn.Close();
            }
            return ds;
        }

        public static DataSet ObtenerPrestamosVencidosPorSocio(Prestamo prestamo)
        {

            SqlConnection conn = new SqlConnection(connectionstring);
            DataSet ds = new DataSet();
            try
            {
                int idSocio = 0;

                if (prestamo.Socio != null)
                {
                    idSocio = prestamo.Socio.Codigo;
                }

                conn.Open();
                SqlCommand cmd = new SqlCommand("sp_VerPrestamosVencidosSocio", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@idSocio ", idSocio);

                //LLENO EL DATASET
                SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                adapter.Fill(ds);
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
                System.Diagnostics.Debug.WriteLine(ex.StackTrace);
            }
            finally
            {
                if (conn != null)
                    conn.Close();
            }
            return ds;


        }


    }

}

